ExcelVBAPartsCollection Home Excel Reference Manual DownLoad My Profile
Menu Back Next Links Excel Function Manual Myself My BBS


範囲選択の基礎

 





セル範囲指定の書式

1 「Rxnge」によるセル範囲指定

 選択範囲の指定は、エクセルのシートに表示されている列番号(アルファベット)と行番号(数字)を組み合わせて指定します。A列5行目は「Range("A5")」 とします。

[ 参照形式による指定方法 ]
 絶対参照を行う場合は、行番号または列番号の前に「$」マークを付けます。
 行・列ともに絶対参照・・・・・・・・・・・ Range("$A$1:$B$5").Select
 列が絶対参照・行が相対参照・・・・ Range("$A1:$B5").Select
 列が相対参照・行が絶対参照・・・・ Range("A$1:B$5").Select
 行・列ともに相対参照・・・・・・・・・・・ Range("A1:B5").Select

2  「Rxnge」で範囲指定を行うときの留意点

 範囲選択に際して、Range オブジェクトに対してSelectメソッドやActivateメソッドを使用するときは、そのセルを含むワークシートがアクティブになっていなければなりません。

 アクティブでないワークシートのセルを選択するには一旦ワークシートをアクティブにしてからセル選択を行う必要があります。
 Worksheets("TEST").Select
 Range("A1:B5").Select

 非アクティブシートに対し、Worksheets("TEST").Range("A1:B5").Select とすると、エラーになります。

3  「Cells」によるセル範囲指定

 選択範囲の指定は、列番号はセルの列番号の「A」を 1 とした列の左端からの数値による番号。行番号は、A1形式と同じように、セルの行番号(数値)としてこれを組み合わせて指定します。
 Cellaによる場合は行番号,列番号の順で指定します。A列5行目は「Cells(5,1)」 とします。
 
 なお、Cellsプロパティが参照できるのは、「1 つのセル」か、「全セル」かのどちらかだけです。複数のセル範囲を参照するときは、Rangeプロパティと組み合わせて範囲の左上隅と右下隅のセルを指定します。
 「A1:B5」の範囲を指定するには、Range(Cells(1,1),Cells(5,2)).Select というようにします。





Selection と Activecell


 複数セル範囲を選択した場合、「Selection」は選択範囲の全てのセルに有効であるのに対して、「ActiveCell 」は選択範囲の左上セル1箇所のみ有効となります。

Sub test1()
  Range("A1:C4").Select
  ActiveCell.Value = 10
End Sub
 選択範囲「A1:C4」のアクティブセルは選択範囲の左上隅セルだけなので、「A1」に「10」が入力される。

Sub test2()
  Range("A1:C4").Select
  Selection.Value = 10
End Sub
 選択範囲「A1:C4」のすべての選択範囲に「10」が入力される。

Sub test3()
  Range("B2:D5").Select
  Selection.Range("B2").Activate
End Sub
 選択範囲「B2:D5」の中で、さらに選択を行うときは、当初の選択範囲の左上隅セルを基準セル「A1」として相対的な位置を選択するので、セルC3が基準セルからみたB2になる。

Sub test4()
  Range("B2:D4").Select
  Range("A1") = 10
End Sub
 Range("A1") は、選択範囲内での選択ではないので、最初の範囲選択は無視される。





セル単位の選択


1 単一セルの選択

処理内容:A1を選択します。
Sub CellsSelect1()
Worksheets("Sheet1").Select
Range("A1").Select
End Sub

Sub CellsSelect2()
Worksheets("Sheet1").Select
Range("A1").Activate
End Sub

Sub CellsSelect3()
Worksheets("Sheet1").Select
Cells(1,1).Select
End Sub

Sub CellsSelect4()
Worksheets("Sheet1").Select
Cells(1,1).Activate
End Sub

2 隣接(連続)する複数セルの選択

処理内容:A1〜C5を選択します。
Sub CellsSelect5()
Worksheets("Sheet1").Select
Range("A1:C5").Select
End Sub

Sub CellsSelect6()
Worksheets("Sheet1").Select
Range(Cells(1, 1), Cells(5, 3)).Select
End Sub

3 隣接していない(不連続)複数の単独セルの選択

処理内容:A1,B5,D6を選択します。
Sub CellsSelect7()
Worksheets("Sheet1").Select
Range("A1,B5,D6").Select
End Sub

Sub CellsSelect8()
Worksheets("Sheet1").Select
Union(Cells(1, 1), Cells(5, 2), Cells(6, 4)).Select
End Sub

4 隣接していない(不連続)複数の複数セルの選択

処理内容:A1〜C3、B5〜D7を選択します。
Sub CellsSelect9()
Worksheets("Sheet1").Select
Range("A1:C3,B5:D7").Select
End Sub

Sub CellsSelect10()
Worksheets("Sheet1").Select
Union(Range(Cells(1, 1), Cells(3, 3)), Range(Cells(5, 2),Cells(7, 4))).Select
End Sub

5 アクティブシートの全てのセルを選択

処理内容:Sheet1の全てのセルを選択します。
Sub CellsSelect9()
Worksheets("Sheet1").Select
Cells.Select
End Sub






行単位の選択

1 単一行の選択

処理内容:4行目を選択します。
Sub RowsSelect1()
Worksheets("Sheet1").Select
Rows("4:4").Select  '基本形
End Sub

Sub RowsSelect2()
Worksheets("Sheet1").Select
Rows(4).Select '省略形:単一行を選択の場合のみ行番号だけでも可
End Sub

2 隣接(連続)する複数行の選択

処理内容:4〜6行目を選択します。
Sub RowsSelect3()
Worksheets("Sheet1").Select
Rows("4:6").Select '連続行の選択はRowsプロパティ、Rangeプロパティどちらでも可。
End Sub

Sub RowsSelect4()
Worksheets("Sheet1").Select
Range("4:6").Select '連続行の選択はRowsプロパティ、Rangeプロパティどちらでも可。
End Sub

3 隣接していない(不連続)複数行の選択

処理内容:4行目、6行目、8行目を選択します。
Sub RowsSelect5()
Worksheets("Sheet1").Select
Range("4:4,6:6,8:8").Select  '不連続複数行の選択は、Rowsプロパティ不可。
End Sub


処理内容:4〜5行、7〜8行、10行目を選択します。
Sub RowsSelect6()
Worksheets("Sheet1").Select
Range("4:5,7:8,10:10").Select  '不連続複数行の選択は、Rowsプロパティ不可。
End Sub





列単位の選択

1 単一列の選択

処理内容:A列を選択します。
Sub ColimnsSelect1()
Worksheets("Sheet1").Select
Columns("A:A").Select  '基本形
End Sub

Sub ColimnsSelect2()
Worksheets("Sheet1").Select
Columns("A").Select '省略形
End Sub

Sub ColimnsSelect2()
Worksheets("Sheet1").Select
Columns(1).Select '省略形:単一列を選択の場合列番号だけでも可
End Sub

2 隣接(連続)する複数列の選択

処理内容:B〜C列を選択します。
Sub ColimnsSelect3()
Worksheets("Sheet1").Select
Columns("B:C").Select
End Sub

Sub ColimnsSelect3-1()
Worksheets("Sheet1").Select
Range("B:C").Select
End Sub

Sub ColimnsSelect4()
Worksheets("Sheet1").Select
Range(Columns(2), Columns(3)).Select
End Sub

3 隣接していない(不連続)複数列の選択

処理内容:A列、C列、E列を選択します。
Sub ColimnsSelect5()
Worksheets("Sheet1").Select
Range("A:A,C:C,E:E").Select
End Sub


処理内容:A〜B列、D〜E列、G〜H列を選択します。
Sub ColimnsSelect6()
Worksheets("Sheet1").Select
Range("A:B,D:E,G:H").Select
End Sub





リスト範囲の選択


 リスト範囲の行や列が追加されたり、領域が常に変動するリストの範囲を選択するには、
「CurrentRegion」プロパティまたは「UsedRange」プロパティを使用します。

 「CurrentRegion」プロパティは、基準セルを含む連続したセル範囲選択で空白セルで囲まれた領域を選択します。
 従って、リスト範囲に隣接してリストと関係がないデータが登録されていると、その登録範囲も選択されてしまいます。リスト範囲だけを限定して選択するときは、リストに隣接するセルがすべて空白になっている必要があります。

 「UsedRange」プロパティは、シートで使用されているセルの左上端セルから右下端セルの矩形範囲(空白列・行を含む)を選択します。

CurrentRegionでの選択範囲

UsedRangeでの選択範囲


1 リスト(データベース)範囲の選択

処理内容:基準セル(A1)を含む連続したセル範囲を選択します。
Sub ListSelect1()
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
End Sub


処理内容:使用されたセル範囲を選択します。
Sub ListSelect2()
Worksheets("Sheet1").Select
ActiveSheet.UsedRange.Select
End Sub





変数によるセル選択


1 リスト選択範囲すべてを変数により指定

処理内容:変数に定数を用いてA1:D5のセル範囲を選択します。
Sub ListSelect3()
Dim 左上端 As String,右下端 As String
Worksheets("Sheet1").Select
左上端 ="A1"
右下端 ="D5"
Range(左上端 & ":" & 右下端).Select
End Sub


処理内容:リストの右下隅セルアドレスを取得してセル範囲を選択します。
Sub ListSelect4()
Dim 左上端 As String,右下端 As String
Worksheets("Sheet1").Select
左上端 ="A1"
右下端 = Range(左上端).SpecialCells(xlLastCell).Address
Range(左上端 & ":" & 右下端).Select
End Sub


処理内容:リストの最下行番号と右端列番号を取得してセル範囲を選択します。
Sub ListSelect5()
Dim 最下行番号 As Long,右端列番号 As Integer
Worksheets("Sheet1").Select
最下行番号=Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
右端列番号=Cells(1,ActiveSheet.Columns.Count).End(xlToLeft).Column
Range(Cells(1,1),Cells(最下行番号,右端列番号)).Select
End Sub


処理内容:リストの四隅の行・列番号を取得してセル範囲を選択します。
Sub ListSelect6()
Dim Ystart As Long,Yend As Long
Dim Xstart As Integer,Xend As Integer
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
Ystart= Selection.Row  '最上行番号
Yend = Ystart + Selection.Rows.Count - 1  '最下行番号
Xstart= Selection.Column  '左端列番号
Xend = Ystart + Selection.Columns.Count - 1  '右端列番号
Range(Cells(Ystart,Xstart),Cells(Yend,Xend)).Select
End Sub

2 見出し行・見出し列の選択

処理内容:見出し行範囲を選択します。
Sub ListSelect7()
Dim LeftTop As String,RightTop As String
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
LeftTop = Selection.Item(1).Address  '左上端番地
RightTop = Selection.Item(Selection.Columns.Count).Address  '右上端番地
Range(LeftTop & ":" & RightTop).Select
End Sub


処理内容:見出し列範囲を選択します。
Sub ListSelect8()
Dim 先頭行番号 As Long,最下行番号 As Long
Dim 左端列番号 As Integer
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
先頭行番号 = Selection.Row
最下行番号 = 先頭行番号 + Selection.Rows.Count - 1
左端列番号 = Selection.Column
Range(Cells(先頭行番号, 左端列番号),Cells(最下行番号, 左端列番号)).Select
End Sub

3 選択範囲指定の一部に変数を使用

処理内容:見出し行範囲を選択します。右上端セル番地を変数で指定します。
Sub ListSelect9()
Dim 右上端 As String
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
右上端 = Selection.Item(Selection.Columns.Count).Address
Range("A1" & ":" & 右上端).Select
End Sub


処理内容:見出し行を除いたデータ範囲を選択します。B列下端行番号のみ変数指定します。
Sub ListSelect10()
Dim 最下行番号 As Long
Worksheets("Sheet1").Select
最下行番号 = Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row
Range("A2:B" & 最下行番号).Select
End Sub





Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!